/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.adsi.logica;

import com.adsi.modelo.Clientes;
import com.adsi.persistencia.IClienteDAO;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;

/**
 *
 * @author Estudiante
 */
@Stateless
public class LogicaClientes implements LogicaClientesLocal {

    @EJB
    private IClienteDAO clienteDAO;
    
    @Override
    public void registrar(Clientes c) throws Exception {
       //Valida que el objeto al momento de registrar no llegue vacio
        if(c==null){
            throw new Exception("El cliente no tiene información");
        } 
        //Valida que el documento del estudiante no llegue vacio
        if(c.getCliCedula()==null){
            throw new Exception("El número de cedula es obligatorio");
        }
        //Se instancia el objeto estudiante para verificar si ya esta registrado en la BD
        Clientes objClientes=clienteDAO.consultarPorCod(c.getCliCedula());
        /*Si consulta y no trae ningun valor es por que no esta registrado
        Pero si trae algo diferente a null es por que ya se registro*/
        if(objClientes!=null){
            throw new Exception("El cliente ya se encuentra registrado");
        }
        //Verifica que el nombre no llegue vacio
        if(c.getCliNombre()==null || c.getCliNombre().equals("")){
            throw new Exception("El nombre es obligatorio");
        }
        clienteDAO.registrar(c);
    }

    @Override
    public void modificar(Clientes c) throws Exception {
        //Valida que el objeto al momento de registrar no llegue vacio
        if(c==null){
            throw new Exception("El cliente no tiene información");
        } 
        //Valida que el documento del estudiante no llegue vacio
        if(c.getCliCedula()==null){
            throw new Exception("El número de cedula es obligatorio");
        }
        //Se instancia el objeto estudiante para verificar si ya esta registrado en la BD
        Clientes objClientes=clienteDAO.consultarPorCod(c.getCliCedula());
        /*Si consulta y no trae ningun valor es por que no esta registrado
        Pero si trae algo diferente a null es por que ya se registro*/
        if(objClientes==null){
            throw new Exception("El cliente ya se encuentra registrado");
        }
        //Verifica que el nombre no llegue vacio
        if(c.getCliNombre()==null || c.getCliNombre().equals("")){
            throw new Exception("El nombre es obligatorio");
        }
        clienteDAO.modificar(c);
    }

    @Override
    public void eliminar(Clientes c) throws Exception {
        Clientes objClientes=clienteDAO.consultarPorCod(c.getCliCedula());
        if(objClientes==null){
            throw new Exception("El cliente que desea eliminar no se encuentra registrado");
        }
        clienteDAO.eliminar(objClientes);
    }

    @Override
    public List<Clientes> consultar() throws Exception {
        return clienteDAO.consultar();
    }



    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")

    @Override
    public Clientes consultarPorCod(Long cli_cedula) throws Exception {
        if(cli_cedula==null){
            throw new Exception("El cliente no se encuentra registrado");
        }
        return clienteDAO.consultarPorCod(cli_cedula);
    }
}
